home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 1 / QRZ Ham Radio Callsign Database - December 1993.iso / ucsd / packet / tcpip / amiga / asrc29k.lha / socket.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-08  |  5.0 KB  |  175 lines

  1. #ifndef    SOCK_STREAM
  2.  
  3. #include "global.h"
  4.  
  5. /* Local IP wildcard address */
  6. #define    INADDR_ANY    0x0L
  7.  
  8. /* IP protocol numbers */
  9. #define    IPPROTO_ICMP    1
  10. #define    IPPROTO_TCP    6
  11. #define    IPPROTO_UDP    17
  12.  
  13. /* TCP port numbers */
  14. #define    IPPORT_ECHO    7    /* Echo data port */
  15. #define    IPPORT_DISCARD    9    /* Discard data port */
  16. #define    IPPORT_FTPD    20    /* FTP Data port */
  17. #define    IPPORT_FTP    21    /* FTP Control port */
  18. #define IPPORT_TELNET    23    /* Telnet port */
  19. #define IPPORT_SMTP    25    /* Mail port */
  20. #define    IPPORT_FINGER    79    /* Finger port */
  21. #define    IPPORT_TTYLINK    87    /* Chat port */
  22. #define    IPPORT_POP    109    /* Pop port */
  23. #define IPPORT_NNTP    119    /* News port */
  24. #define    IPPORT_RLOGIN    513    /* Remote login */
  25. #define IPPORT_CHATNODE    3600    /* Chatnode port */
  26.  
  27. /* UDP port numbers */
  28. #define    IPPORT_DOMAIN    53
  29. #define    IPPORT_RWHO    513
  30. #define    IPPORT_RIP    520
  31. #define    IPPORT_REMOTE    1234    /* Pulled out of the air */
  32.  
  33. #define    AF_INET        0
  34. #define    AF_AX25        1
  35. #define AF_NETROM    2
  36. #define    AF_LOCAL    3
  37.  
  38. #define    SOCK_STREAM    0
  39. #define    SOCK_DGRAM    1
  40. #define    SOCK_RAW    2
  41. #define SOCK_SEQPACKET    3
  42.  
  43. /* Socket flag values - controls newline mapping */
  44. #define    SOCK_BINARY    0    /* socket in raw (binary) mode */
  45. #define    SOCK_ASCII    1    /* socket in cooked (newline mapping) mode */
  46. #define    SOCK_QUERY    2    /* Return setting without change */
  47.  
  48. #define    EMFILE    1
  49. #define    EBADF    2
  50. #define    EINVAL    3
  51. #define    ESOCKTNOSUPPORT    4
  52. #define    EAFNOSUPPORT    5
  53. #define    EOPNOTSUPP    6
  54. #define    EFAULT        7
  55. #define    ENOTCONN    8
  56. #define    ECONNREFUSED    9
  57. #define EAFNOSUPP    10
  58. #define    EISCONN        11
  59. #define    EWOULDBLOCK    12
  60. #define    EINTR        13
  61. #define    EADDRINUSE    14
  62. #define    ENOMEM        15
  63. #define EMSGSIZE    16
  64. #define    EALARM        17
  65. #define    EABORT        18
  66.  
  67. extern int Console;    /* Console socket number */
  68.  
  69. /* Berkeley format socket address structures. These things were rather
  70.  * poorly thought out, but compatibility is important (or so they say).
  71.  * Note that all the sockaddr variants must be of the same size, 16 bytes
  72.  * to be specific. Although attempts have been made to account for alignment
  73.  * requirements (notably in sockaddr_ax), porters should check each
  74.  * structure.
  75.  */
  76.  
  77. /* Generic socket address structure */
  78. struct sockaddr {
  79.     short sa_family;
  80.     char sa_data[14];
  81. };
  82.  
  83. /* This is a structure for "historical" reasons (whatever they are) */
  84. struct in_addr {
  85.     unsigned long s_addr;
  86. };
  87.  
  88. /* Socket address, DARPA Internet style */
  89. struct sockaddr_in {
  90.     short sin_family;
  91.     unsigned short sin_port;
  92.     struct in_addr sin_addr;
  93.     char sin_zero[8];
  94. };
  95.  
  96. /* AX.25 sockaddr stuff */
  97. #define    AXALEN        7
  98.  
  99. /* Number of chars in interface field. The involved definition takes possible
  100.  * alignment requirements into account, since ax25_addr is of an odd size.
  101.  */
  102. #define    ILEN    (sizeof(struct sockaddr) - sizeof(short) - AXALEN)
  103.  
  104. /* Socket address, AX.25 style */
  105. struct sockaddr_ax {
  106.     short sax_family;        /* 2 bytes */
  107.     char ax25_addr[AXALEN];
  108.     char iface[ILEN];        /* Interface name */
  109. };
  110.  
  111. /* Netrom socket address. */
  112. #ifndef NR4MAXCIRC
  113. struct nr4_addr {
  114.     char user[AXALEN];
  115.     char node[AXALEN];
  116. };
  117. #endif
  118.  
  119. struct sockaddr_nr {
  120.     short nr_family;
  121.     struct nr4_addr nr_addr;
  122. };
  123.  
  124. #define    SOCKSIZE    (sizeof(struct sockaddr))
  125. #define MAXSOCKSIZE    SOCKSIZE /* All sockets are of the same size for now */
  126.  
  127. extern int32 Ip_addr;
  128. /* In socket.c: */
  129. int accept __ARGS((int s,char *peername,int *peernamelen));
  130. int bind __ARGS((int s,char *name,int namelen));
  131. int close_s __ARGS((int s));
  132. int connect __ARGS((int s,char *peername,int peernamelen));
  133. void freesock __ARGS((struct proc *pp));
  134. int getpeername __ARGS((int s,char *peername,int *peernamelen));
  135. int getsockname __ARGS((int s,char *name,int *namelen));
  136. int listen __ARGS((int s,int backlog));
  137. int recv_mbuf __ARGS((int s,struct mbuf **bpp,int flags,char *from,int *fromlen));
  138. int send_mbuf __ARGS((int s,struct mbuf *bp,int flags,char *to,int tolen));
  139. int setflush __ARGS((int s,int c));
  140. int shutdown __ARGS((int s,int how));
  141. int socket __ARGS((int af,int type,int protocol));
  142. void sockinit __ARGS((void));
  143. int sockkick __ARGS((int s));
  144. int socklen __ARGS((int s,int rtx));
  145. struct proc *sockowner __ARGS((int s,struct proc *newowner));
  146. int usesock __ARGS((int s));
  147.  
  148. /* In sockuser.c: */
  149. void flushsocks __ARGS((void));
  150. int keywait __ARGS((char *prompt,int flush));
  151. int recv __ARGS((int s,char *buf,int len,int flags));
  152. int recvchar __ARGS((int s));
  153. int recvfrom __ARGS((int s,char *buf,int len,int flags,char *from,int *fromlen));
  154. int recvline __ARGS((int s,char *buf,unsigned len));
  155. int send __ARGS((int s,char *buf,int len,int flags));
  156. int sendto __ARGS((int s,char *buf,int len,int flags,char *to,int tolen));
  157. int seteol __ARGS((int s,char *seq));
  158. void tflush __ARGS((void));
  159. int tprintf __ARGS((char *fmt,...));
  160. int tputc __ARGS((char c));
  161. int tputs __ARGS((char *s));
  162. void usflush __ARGS((int s));
  163. int usprintf __ARGS((int s,char *fmt,...));
  164. int usputc __ARGS((int s,char c));
  165. int usputs __ARGS((int s,char *x));
  166. int usvprintf __ARGS((int s,char *fmt, va_list args));
  167.  
  168. /* In file sockutil.c: */
  169. struct usock *itop __ARGS((int s));
  170. char *psocket __ARGS((void *p));
  171. char *sockerr __ARGS((int s));
  172. char *sockstate __ARGS((int s));
  173.  
  174. #endif    /* SOCK_STREAM */
  175.